#ifndef __RENDERER__
#define __RENDERER__

#include <windows.h>
#include "shared.h"

#define DISPLAY_SCROLL        1

struct OverlayState
{
  SharedData const* data;

  int resizing;
  POINT resizePrev;
  int scrollTop;
  int display;

  bool showReply;
  bool hoverReply;
};

class D3D9Renderer;
class DXGIRenderer;

class OverlayRenderer
{
  const SharedData data;
  OverlayState state;

  D3D9Renderer* d3d9Renderer;
  DXGIRenderer* dxgiRenderer;

public:
  OverlayRenderer(HINSTANCE hInstance, HMODULE hD3D9, HMODULE hD3D10, HMODULE hD3D11);
  ~OverlayRenderer();

  bool onMouseEvent(unsigned long msg, MOUSEHOOKSTRUCTEX const* mh);
  bool onKeyEvent(WPARAM wParam, LPARAM lParam);
  void onDestroy(HWND hWnd);
};

#endif // __RENDERER__
